/**
 * 1.加解密（暂无）
 * 2.过期时间（默认7天）
 */

interface StorageData {
  value: unknown;
  expire: number | null;
}

/** 默认缓存期限为7天 */
const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7

/**
 * @description uni.setStorageSync
 * @param key 键名
 * @param value 值
 * @param expire ?. 可选，默认7天
 */
export function setLocal(key: string, value: unknown, expire: number | null = DEFAULT_CACHE_TIME) {
  const storageData: StorageData = { value, expire: expire !== null ? new Date().getTime() + expire * 1000 : null };
  uni.setStorageSync(key,storageData);
}

export function getLocal<T>(key: string) {
  const json: StorageData | null = uni.getStorageSync(key);
  if (json) {
    const { value, expire } = json;
    // 在有效期内直接返回
    if (expire === null || expire >= Date.now()) {
      return value as T;
    }
  }
  removeLocal(key)
  return null;
}

export function removeLocal(key: string) {
  uni.removeStorageSync(key);
}

export function clearLocal() {
  uni.clearStorage();
}